#include <iostream>

#include "ExpressionCalcul.hpp"

#include "Affectation.hpp"

#include "Expression.hpp"
#include "ExpressionValue.hpp"

Affectation::Affectation(Expression* _gauche, Expression* _droite)
{
    gauche = _gauche;
    droite = _droite;
}

void Affectation::execute()
{
    LOGFUNCTION ( IEXEC_LOG );
    gauche->compute();
    droite->compute();
    
    if(isNumerical(gauche->getValue()) && isNumerical(droite->getValue())) {
        setNumerical(gauche->getValue(),getNumerical(droite->getValue()));
    }
    
    if(isBoolean(gauche->getValue()) && isBoolean(droite->getValue())) {
        setBoolean(gauche->getValue(),getNumerical(droite->getValue()));
    }
}

void Affectation::display(const unsigned int shift) const
{
    gauche->display();
    std::cout << " = ";
    droite->display();
    std::cout << ";\n";
}

Affectation::~Affectation(){}
